package com.test17_Lambda;

import org.junit.Test;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * 内建函数式接口
 * 1、Function(功能型函数式接口)：可以接收参数，也可以返回数据
 * 2、Consumer(消费型函数式接口)：只接受数据，不返回数据
 * 3、Supplier(供给型函数式接口)：不接受任何参数，只进行内容的返回
 * 4、Predicate(断言型函数式接口)：主要进行判断操作使用
 */
public class YootkDemo_03 {

    @Test
    public void test1() {
        // 功能型函数式接口
        Function<String, Boolean> fun = "##yootk.com" :: startsWith;
        System.out.println(fun.apply("##"));
    }

    @Test
    public void test2() {
        // 消费型函数式接口
        Consumer<String> consumer = System.out :: println;
        consumer.accept("沐言优拓：www.yootk.com");
    }

    @Test
    public void test3() {
        // 供给型函数式接口
        Supplier<String> supplier = "沐言优拓：www.YOOTK.com" :: toLowerCase;
        System.out.println(supplier.get());
    }

    @Test
    public void test4() {
        // 断言型函数式接口
        Predicate<String> predicate = "yootk" :: equalsIgnoreCase;
        System.out.println(predicate.test("YOOTK"));
    }
}
